<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // string number boolean null undefined array object

    // ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的(没有键名或者键名键值都是同一个值)，没有重复的值。

    // 如何创建Set数据 => 通过构造函数Set创建
    var s = new Set();
    // console.log(s);
    
    // Set数据的属性和拓展方法

    // 属性:
    // size   返回Set数据(实例)的成员(元素)的个数

    // 方法:
    // add()      添加某个值，返回 Set 结构本身(可以接链式操作)。
    // delete()   单删  删除某个值，返回一个布尔值，表示删除是否成功。
    // clear()    清除所有成员，没有返回值。
    // has()      返回一个布尔值，表示该值是否为Set的成员。

    // var result = s.add(1);
    // console.log(result);
    
    s.add(1).add(2).add(3).add(4);

    // 两个空对象引用不同的内存空间  => 不相同 可以重复添加
    // s.add({});
    // s.add({});

    // 两个空对象引用同一片的内存空间  => 相同 不能重复添加
    var obj = {};
    var data = obj;
    s.add(obj);
    s.add(data);
</script>
</html>